/*
*编写程序由从标准输入设备读入的元素数据建立一个int型vector对象
*动态创建一个与该vector对象大小一致的数组，把vector对象的所有元素复制给新数组
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{	
	int iVal;
	vector<int> ivec;
	cout << "请输入一组整数：";
	while(cin >> iVal)
	{
		ivec.push_back(iVal);
	}

	//输出vector中的对象
	cout << "vector对象中的元素值：" << endl;
	for(vector<int>::size_type st = 0;st != ivec.size();st++)
	{
		cout << ivec[st] << "  ";
	}

	cout << endl;

	/*
	*动态创建一个与该vector对象大小一致的数组，把vector对象的所有元素复制给新数组
	*方法一：
	*/
	int *ip = new int[ivec.size()];
	//将vector中的元素值赋给动态数组
	for(vector<int>::size_type st = 0;st != ivec.size();st++)
	{
		*ip = ivec[st];
		ip++;
	}

	//重置指针，用一个新的指针指向数组中的第一个元素的地址
	int *tp = ip-ivec.size();
	//输出动态数组中的元素值
	cout << "动态数组中的元素值(方法一)："  << endl;
	for(int i = 0;i < ivec.size();i++)
	{
		cout << *tp << "  ";
		tp++;
	}

	//将指针指回数组第一个元素地址
	ip -= ivec.size();
	//释放内存空间
	delete [] ip;
	//将指针指向空地址
	ip = 0;

	cout << endl;

	/*
	*方法二：
	*/
	int *ip1 = new int[ivec.size()];
	for(vector<int>::size_type st = 0;st != ivec.size();st++)
	{
		*(ip1+st) = ivec[st];
	}
	cout << "动态数组中的元素值(方法二)："  << endl;
	for(int i = 0;i < ivec.size();i++)
	{
		cout << *(ip1+i) << "  ";
	}
	
	delete [] ip1;

	cout << endl;
	system("pause");
	return 0;
}


